/*
 * YYYY:	Πλήρης χρόνος
 * YY: 		2 τελευταία ψηφία χρόνου
 * MM:		Πλήρης μήνας
 * MM:		Γενική Πλήρη μήνα(π.χ. Ιανουάριος -> Ιανουαρίου)
 * M:		Συντομογραφία μήνα
 * gg:		Αύξων αριθμός μήνα, με μηδενικό μπροστά αν είναι μικρότερος του 10
 * g:		Αύξων αριθμός μήνα
 * DD:		Μέρα
 * D:		Συντομογραφία μέρας
 * dd:		Αύξων αριθμός μέρας, με μηδενικό μπροστά αν είναι μικρότερος του 10
 * d:		Αύξων αριθμός μέρας
 * ΗΗ:		Ώρες σε 24ωρη μορφή, με μηδενικό μπροστά αν είναι μικρότερος του 10
 * H:		Ώρες σε 24ωρη μορφή
 * hh:		Ώρες σε 12ωρη μορφή, με μηδενικό μπροστά αν είναι μικρότερος του 10
 * h:		Ώρες σε 24ωρη μορφή
 * mm:		Λεπτά με μηδενικό μπροστά αν είναι μικρότερος του 10
 * m:		Λεπτά
 * ss:		Δευτερόλεπτα με μηδενικό μπροστά αν είναι μικρότερος του 10
 * s:		Δευτερόλεπτα
 * ll:		Τρίτα με μηδενικό μπροστά αν είναι μικρότερος του 10
 * l:		Τρίτα
*/

(function(){
	var months = ["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"];
	var months2 = ["Ιανουαρίου","Φεβρουαρίου","Μαρτίου","Απριλίου","Μαϊου","Ιουνίου","Ιουλίου","Αυγούστου","Σεπτεμβρίου","Οκτωβρίου","Νοεμβρίου","Δεκεμβρίου"];
	var months3 = ["Ιαν","Φεβ","Μάρ","Απρ","Μάι","Ιούν","Ιού","Αύγ","Σεπ","Οκτ","Νοέ","Δεκ"];

	var days = ["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"];
	var days3 = ["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"];

	Date.prototype.format = function(format){
		if(!format || typeof format != 'string') return this;

		if(format.indexOf("YYYY")!=-1){
			format = format.replace("YYYY",this.getFullYear());
		}
		if(format.indexOf("YY")!=-1){
			var year = this.getFullYear().toString().substring(2,4);

			format = format.replace("YY",year);
		}
		if(format.indexOf("MMM")!=-1){
			format = format.replace("MMM",months2[this.getMonth()]);
		}
		if(format.indexOf("MM")!=-1){
			format = format.replace("MM",months[this.getMonth()]);
		}
		if(format.indexOf("M")!=-1){
			format = format.replace("M",months3[this.getMonth()]);
		}
		if(format.indexOf("gg")!=-1){
			var month = this.getMonth()+1;
			if(month <10)
				month = '0'+month;
			format = format.replace("gg",month);
		}
		if(format.indexOf("g")!=-1){
			format = format.replace("g",this.getMonth()+1);
		}
		if(format.indexOf("DD")!=-1){
			format = format.replace("DD",days[this.getDay()]);
		}
		if(format.indexOf("D")!=-1){
			format = format.replace("D",days3[this.getDay()]);
		}
		if(format.indexOf("dd")!=-1){
			var date = this.getDate();
			if(date <10)
				date = '0'+date;
			format = format.replace("dd",date);
		}
		if(format.indexOf("d")!=-1){
			format = format.replace("d",this.getDate());
		}
		if(format.indexOf("HH")!=-1){
			var hours = this.getHours();
			if(hours <10)
				hours = '0' + hours;
			format = format.replace("HH",hours);
		}
		if(format.indexOf("H")!=-1){
			format = format.replace("H",this.getHours());
		}
		if(format.indexOf("hh")!=-1){
			var hours = this.getHours();
			if(hours >12)
				hours -= 12;
			if(hours <10)
				hours = '0' + hours;
			format = format.replace("hh",hours);
		}
		if(format.indexOf("h")!=-1){
			var hours = this.getHours();
			if(hours >12)
				hours -= 12;
			format = format.replace("h",hours);
		}
		if(format.indexOf("mm")!=-1){
			var minutes = this.getMinutes();
			if(minutes <10)
				minutes = '0' + minutes;
			format = format.replace("mm",minutes);
		}
		if(format.indexOf("m")!=-1){
			format = format.replace("m",this.getMinutes());
		}
		if(format.indexOf("ss")!=-1){
			var seconds = this.getSeconds();
			if(seconds <10)
				seconds = '0' + seconds;
			format = format.replace("ss",seconds);
		}
		if(format.indexOf("s")!=-1){
			format = format.replace("s",this.getSeconds());
		}
		if(format.indexOf("ll")!=-1){
			var milliseconds = this.getMilliseconds();
			if(milliseconds <1000)
				milliseconds = '0' + milliseconds;
			format = format.replace("ll",milliseconds);
		}
		if(format.indexOf("l")!=-1){
			format = format.replace("l",this.getMilliseconds());
		}
		return format;
	}
})();